Memory integrated circuits are typically assembled on memory modules for incorporation into computing devices, such as personal computers. Before a memory module is incorporated in a computing device, the module and memory integrated circuits assembled on the module are usually tested for faults. For instance, personal computer manufacturers typically purchase memory modules from subcontractors. The subcontractors assemble the memory integrated circuits on the memory modules according to the manufacturers' specifications, and then test the modules to ensure their proper operation before shipping the modules to the manufacturer. Computer manufacturers expect high reliability for the memory modules. Thus, subcontractors who assemble memory modules generally must test the assembled modules to meet predetermined specifications of the computer manufacturer with a high degree of reliability.
Conventional memory integrated circuits include DRAM, SDRAM, and SGRAM integrated circuits that operate at speeds of up to 100 megahertz. Recently, a new type of integrated memory circuit known as a direct RAMBUS integrated circuit (RDRAM), has been introduced that is capable of operating at much higher speeds, such as a clock speed of 400 megahertz, with data transactions occurring on both edges of the clock signal to provide an effective device speed of 800 megahertz. To obtain these improved operating speeds, RAMBUS integrated circuits are loaded on a specially designed RDRAM integrated memory module, known as a RAMBUS In-Line Memory Module ("RIMM"). RIMMs include a Direct RAMBUS ASIC channel cell (RAC) to support communications between the RIMM and another RAC located in a computing device. A RAC is a logical to physical interface that multiplexes and demultiplexes 144 bit wide datums with an 18 bit wide RAMBUS channel. Cooperating RACs communicate data over the 18 bit wide RAMBUS channel by exchanging control and address information in unique packetized formats. A RAMBUS Memory Controller ("RMC") supports data transfers with a RAC by taking simple high-level commands and data to create simpler commands formatted for the RAC and by scheduling for data transmittal or retrieval.
For instance, a RMC may receive or transmit data at a 100 MHz clock rate. In one clock cycle, the RMC may receive 40 bits worth of information, including 35 address bits, 4 command bits and 1 packet length bit, along with 144 bits worth of data to be written to a RIMM. The RMC reformats the 40 address/command/length bits into a sequence of commands to the RAC with each command having 64 bits of packet information and 12 bits of scheduling information. The 144 bits of data are passed unchanged to the RAC. The RAC then transmits this information to a RAC of one of the Direct RDRAM chips in the RIMM with the 64 bits of packet information broken down into 8 sets of 8 bits and the 144 bits of data broken down into 8 sets of 18 bits. The transfer between RACs is clocked out on the leading and trailing edges of a 400 MHz clock to allow all eight sets of data to be transmitted within a 10 ns window that matches the 100 MHz system bus clock.
The use of RDRAM integrated circuits loaded on a RIMM allows a substantial increase in the rate at which data is exchanged for use by a processor of a computing device. However, the increased speed at which RIMMs operate makes it especially important to ensure that no faults exist on the RIMMs before the RIMMs are used in a computing device. At the present time, commercial microprocessor bus systems do not exist that will support a RAMBUS channel operating at higher than 100 megahertz.
Faults associated with a RIMM can be introduced in a number of different manners. A fault can exist in the RDRAM integrated circuits and RIMM printed wire board (PWB) before assembly, or can be introduced during assembly. For instance, RIMM PWBs can have PWB faults such as open or shorted traces due to under plating or over plating, excessive warpage, and out of tolerance electrical characteristics. RDRAM faults can include open or shorted pins due to lead frame bonding flaws, inoperable nodes internal to the device, and excessive sensitivity to signal patterns, temperature variations, voltages, and/or internal node states. Faults introduced during assembly of a RIMM can include incorrect installation of parts, open or shorted signals through the use of excessive or insufficient solder, signal path contamination resulting in high pin leakage, ESD damage resulting in high pin leakage, and damaged pin drivers or input buffers.
Several conventional testers are available for testing memory modules. The simplest type of memory tester is a microprocessor-based tester. Microprocessor-based testers essentially act as a mother board to pass microprocessor-generated test data to a module and read the test data sent back from the module. The memory module is tested by comparing the written and read data. Although microprocessor-based testers are simple to build and use, they are generally slow in operation and incapable of performing more complex types of tests. Such testers usually feature commodity memory controllers as the interface between the microprocessor and the memory module.
Most other types of conventional memory testers are hardware-enhanced. Hardware-enhanced testers provide more rapid testing of memory modules by using specialized hardware to generate test accesses and verify test data. One such hardware-enhanced memory testing system is a vector-based system. Vector-based systems use a microprocessor to generate test data, and then store the test data in memory until the data is sent to the module under test. A key disadvantage to vector-based systems is that they generally require large amounts of memory for storing test data before the data is sent to the module under test.
Another hardware-enhanced method for testing memory modules is through the use of an interface that provides test data to the module under test. For instance, the SIGMA testing systems produced by Tanisys Technology, Inc. create test data with algorithms and incorporate specialized controllers to interface the algorithmically-created data with the module under test. A microprocessor supervises the operation of the specialized controller, which in response generates and writes predetermined data to the memory module through an interface, and then reads back the data and compares it against the written data to ensure that the memory module is operating properly.
Many of the hardware-enhanced memory testers use pin drivers. Pin drivers and receivers interfaced with the memory module send signals to and receive signals from the memory module under test. Conventional pin drivers are frequently used to test a variety of integrated circuits, including microprocessors, where operational parameters such as input voltage range, output voltage range, power supply range, and signal timing vary widely between device types. Pin-driver based testers generally incorporate expensive and complex hardware and software that determine whether the output signals generated are appropriate for a given suite of test signals. Conventional pin drivers are expensive and their use to test memory devices is generally considered overkill since memory devices typically operate over a narrow range of voltages and speeds, such as the 0.8 voltage swing for RDRAM signals, whereas pin drivers are designed to operate over a large voltage range, such as 7 to -5 volts. In addition, conventional pin drivers are typically housed in large packages with high input voltages that generate considerable amounts of heat, frequently requiring cooling by fluids.
A number of difficulties exist in attempting to use conventional memory testing systems to test RIMMs. One difficulty is presented by the rapid operating speeds of RIMMs. For instance, conventional 100 megahertz memory devices and busses cannot exchange data at the full operating rate of a RIMM. Although pin-driver systems can present data to a RIMM at full operating speeds, pin driver systems are expensive and difficult to use.
Another difficulty is converting data generated by conventional testing systems into a format that is readable by a RIMM. For instance, RIMMs typically have 8 control lines that carry packetized control information in 64 bit packets. Further, RIMMS have an 18 bit wide RAMBUS channel with occupancy of the channel dependent upon prior and pending channel activity.
Another difficulty is the implementation of testing algorithms and sequences that test the various RIMM configurations and RIMM transaction sequences under worst-case test conditions.